#include <iostream>
using namespace std;

class Point
{
public:
    // 带有类内初始值设定项的成员必须为常量
    // static int b{2};
    // 使用 inline 定义 静态非只读变量
    static inline int a{1};
    // 产生这个的原因：
    // 1、静态非 const 数据成员只能声明在类体里；
    // 2、旧标准不允许在类体内直接给它们初始化值；
    // 3、因此必须把真正的定义+初始化放到某一个 .cpp 文件里，否则链接时报错；
    // 4、一旦项目里忘了这个 .cpp，或者 header-only 库根本没有 .cpp，就陷入两难

    // 静态非只读成员一般定义在h文件里面，被多方引入。如果直接初始化会初始化很多次
    // 所以之前的版本不写在声明里面，通过 inline就可以告诉编译器只用一份完事

};
int main()
{
    cout << Point::a << endl;
    Point::a = 2;
    cout << Point::a << endl;
}
